package wasweisichquiz;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.UIDefaults;

import javax.swing.WindowConstants;
import javax.swing.filechooser.FileFilter;

import wasweisichquiz.Quiz;

/**
 * @version Revision xx - MAIN Changes 
 * + ...
 * + ... 
 *    -> ... 
 *    -> ... 
 * + @author <NAME>
 * 
 * @version Revision 33-39 - MAIN Changes
 * + FAQ Design abgeschlossen
 * + Anzeige der Restfragen
 * + Laden *wirklich* implementiert ;-)
 * + @author Rafael
 * 
 * @version Revision 23 - MAIN Changes
 * +Laden implementiert 
 * +Es wird eine Neues Quiz gestartet und altes visible = false 
 * + @author Qendrim  
 * 
 * @version Revision 22-24 - MAIN Changes 
 * + MenuLeiste, FAQ und About Fenster (unbearbeitet, nicht ausgereift ;)
 *   --- Menu bleibt aufgeklappt, wenn man irgendwo anders klickt :/
 *   --- liegt am "Look and Feel" oder missing actionListener?
 * + @author Rafael
 * 
 * @version Revision 21 - MAIN Changes 
 * + Text im questionTextLabel ist mit html-Befehlen bearbeitbar
 * + @author Huseyin
 * 
 * @version Revision 17 - MAIN Changes 
 * + Farbliche Anzeige von Richtig und Falsch
 * + @author Rafael
 * 
 * @version Revision 7 - MAIN Changes 
 * + Texte in den Buttons brechen um wenn Sie das Ende erreicht haben
 * + @author Nico
 * 
 * @version Revision 1 - MAIN Changes 
 * + Grundkonstrukt
 * + @author Erik
 */
@SuppressWarnings("serial")
public class QuizGUI extends javax.swing.JFrame implements ActionListener {

	private String version = "v0.50"; //TODO Versionsnummer hier aktualisieren
	
	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
			//javax.swing.UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
		} catch(Exception e) {
		}
	}

	private JLabel questionTextLabel, questionCounter;
	private JLabel labelFalsch, labelRichtig, labelNoch;
	private JButton answerButton1, answerButton2, answerButton3, answerButton4;
	private JButton nextButton;
	private Quiz quiz;
	private boolean answerHasBeenChoosen = false, einmalig = true;
	private String filename = null;
	

	private JMenuItem laden, beenden, faq, about;
	private JMenuBar menueLeiste;
	private JMenu mnuDatei, mnuHilfe;

	
	/**
	 * Laedt eine Frage auf den questionTextLabel und die Buttons
	 * 
	 * @param question
	 */
	public void loadQuestion(Question question){
		questionTextLabel.setText("<html>"+question.getQuestionText());
		answerButton1.setText("<html><div width=200>" + question.getAnswer1() + "</div></html>");
		answerButton2.setText("<html><div width=200>" + question.getAnswer2() + "</div></html>");
		answerButton3.setText("<html><div width=200>" + question.getAnswer3() + "</div></html>");
		answerButton4.setText("<html><div width=200>" + question.getAnswer4() + "</div></html>");
	}
	
	public QuizGUI(Quiz quizTemp) {
		super("WWiQ - Das \"Was Weiss Ich\" Quiz");

		this.quiz = quizTemp;

		// Menuleiste erzeugen
		menueLeiste = new JMenuBar();
		// Menuelemente erzeugen
		mnuDatei = new JMenu("Datei");
		mnuHilfe = new JMenu("Hilfe");
		// Untermenuelemente erzeugen
		laden = new JMenuItem("Laden..");
		laden.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {

				// --- Fragendatei laden ---

				boolean wiederhole = true;
				
				while (wiederhole) {
					String extFile = "Externe Datei laden...";

					List<String> fileList = new ArrayList<String>();
					try {
						// Search in directory for question files
						File f = new File(quiz.getPathToFiles());
						File[] fileArray = f.listFiles();
						for (int i = 0; i < fileArray.length; i++) {
							filename = fileArray[i].getName();
							if (filename.indexOf(".qz") != -1) {
								fileList.add(fileArray[i].getName());
							}
						}
					} catch (NullPointerException npe) {
						// No files found
					}				

					String[] fileNames = new String[1 + fileList.size()];
					fileNames[0] = extFile;
					for (int i = 1; i < fileNames.length; i++)
						fileNames[i] = fileList.get(i - 1).toString();

					// show files in an dropdown box
					Object selectedValue = JOptionPane.showInputDialog(null,
							"Fragensatz ausw\u00E4hlen:", "Quizdatei laden",
							JOptionPane.INFORMATION_MESSAGE, null, fileNames,
							fileNames[0]);

					if (selectedValue == null) {
						// Auswahl abgebrochen
						wiederhole = false;
					} else if (selectedValue.equals(extFile)) {
						// load external file

						// Create a file chooser -> Open file dialog
						JFileChooser chooser = new JFileChooser();
						chooser.setMultiSelectionEnabled(false); // one file only

						chooser.addChoosableFileFilter(new FileFilter() {

							@Override
							public String getDescription() {
								return "Fragendatei (*.qz)";
							}

							@Override
							public boolean accept(File file) {
								// Convert to lower case before checking extension
								return (file.getName().toLowerCase().endsWith(".qz") || file.isDirectory());
							}
						});

						int option = chooser.showOpenDialog(null);
						if (option == JFileChooser.APPROVE_OPTION) {
							File sf = chooser.getSelectedFile();
							filename = sf.getAbsolutePath();
							quiz.setLoadedFilename(sf.getName());
							// externe Datei erfolgreich ausgewaehlt
							wiederhole = false;
							reloadGUIwithChanges();
						} else {
							// opening file was cancelled
							wiederhole = true;
						}

					} else {
						// get selected file
						filename = quiz.getPathToFiles() + selectedValue.toString();
						quiz.setLoadedFilename(selectedValue.toString());
						wiederhole = false;
						
						reloadGUIwithChanges();
					}
					
				} // while

				
			}
		});
		
		beenden = new JMenuItem("Beenden");
		beenden.setActionCommand("exitGame");
		beenden.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				
				int selectedValue = JOptionPane.showConfirmDialog(null,
						"Willst du das Quiz wirklich verlassen?", "Quiz beenden",
						JOptionPane.YES_NO_CANCEL_OPTION);
				if (selectedValue == 0) {
						System.exit(0);
						}
			}
		});
		
		
		faq = new JMenuItem("FAQ");
		faq.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				showFAQ();
			}
		});
		
		about = new JMenuItem("About");
		about.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				showAbout();
			}
		});
		
		// Menuelemente hinzufuegen
		menueLeiste.add(mnuDatei);
		menueLeiste.add(mnuHilfe);
		
		// Untermenuelemente hinzufuegen
		mnuDatei.add(laden);
		mnuDatei.addSeparator();
		mnuDatei.add(beenden);
		mnuHilfe.add(about);
		mnuHilfe.add(faq);
		setJMenuBar(menueLeiste); // direkt auf den Frame! nicht aufs Panel ;-)

		/// Menu - Ende ///
		
		setResizable(false);	
		
		ActionListener answerButtonListener = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				if(!answerHasBeenChoosen){
					answerHasBeenChoosen = true;
					JButton actualButton=((JButton)e.getSource());

					int actualButtonNumber = Integer.parseInt(actualButton.getName());
					int correctAnswer = quiz.getRigthAnswer();
					
					if ((actualButtonNumber == correctAnswer) && einmalig) {
						//Antwort ist korrekt
						quiz.setCountRichtig(quiz.getCountRichtig() + 1);
						labelRichtig.setText("Richtig: " + quiz.getCountRichtig() + " ");
						einmalig = false;
					} else {
						//Antwort ist falsch
						quiz.setCountFalsch(quiz.getCountFalsch() + 1);
						labelFalsch.setText("Falsch: " + quiz.getCountFalsch() + " ");
						einmalig = false;
					}
					
					switch (actualButtonNumber) {
					case 1:
						if(!quiz.isRigthAnswer(1)){
							answerButton1.setBackground(Color.RED);
						}
						break;
					case 2:
						if(!quiz.isRigthAnswer(2)){
							answerButton2.setBackground(Color.RED);
						}
						break;
					case 3:
						if(!quiz.isRigthAnswer(3)){
							answerButton3.setBackground(Color.RED);
						}
						break;
					case 4:
						if(!quiz.isRigthAnswer(4)){
							answerButton4.setBackground(Color.RED);
						}
						break;
					default:
						break;
					}
					// Korrekte Antwort einfaerben/anzeigen
					switch (correctAnswer) {
					case 1:
						answerButton1.setBackground(Color.GREEN);
						break;
					case 2:
						answerButton2.setBackground(Color.GREEN);
						break;
					case 3:
						answerButton3.setBackground(Color.GREEN);
						break;
					case 4:
						answerButton4.setBackground(Color.GREEN);
						break;

					default:
						break;
					}
					nextButton.setEnabled(true);
				}
			}
		};

		try {
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				answerButton1 = new JButton();
				answerButton1.setName("1");
				getContentPane().add(answerButton1);
				answerButton1.setBounds(29, 114, 244, 83);
				answerButton1.setFocusable(false);
				answerButton1.addActionListener(answerButtonListener);
			}
			{
				answerButton2 = new JButton();
				answerButton2.setName("2");
				getContentPane().add(answerButton2);
				answerButton2.setBounds(290, 114, 244, 83);
				answerButton2.setFocusable(false);
				answerButton2.addActionListener(answerButtonListener);
			}
			{
				answerButton3 = new JButton();
				answerButton3.setName("3");
				getContentPane().add(answerButton3);
				answerButton3.setBounds(29, 215, 244, 83);
				answerButton3.setFocusable(false);
				answerButton3.addActionListener(answerButtonListener);
			}
			{
				answerButton4 = new JButton();
				answerButton4.setName("4");
				getContentPane().add(answerButton4);
				answerButton4.setBounds(290, 215, 244, 83);
				answerButton4.setFocusable(false);
				answerButton4.addActionListener(answerButtonListener);
			}
			{
				questionTextLabel = new JLabel();
				getContentPane().add(questionTextLabel);
				questionTextLabel.setBounds(29, 28, 505, 75);
				questionTextLabel.setText("QUIZ TEXT");
				questionTextLabel.setHorizontalAlignment(SwingConstants.CENTER);
				questionTextLabel.setHorizontalTextPosition(SwingConstants.CENTER);
			}
			{
				questionCounter = new JLabel();
				getContentPane().add(questionCounter);
				String frg = (quizTemp.getActualNumberOfQuestions() == 1) ? " Frage" : " Fragen";				
				questionCounter.setText(quizTemp.getLoadedFilename() + " enth\u00E4lt " + quizTemp.getActualNumberOfQuestions() + frg);
				questionCounter.setBounds(10, 309, 244, 32);
				questionCounter.setForeground(new Color(80,80,80));
				questionCounter.setHorizontalAlignment(SwingConstants.RIGHT);
				questionCounter.setHorizontalTextPosition(SwingConstants.CENTER);
			}
			{
				labelRichtig = new JLabel();
				getContentPane().add(labelRichtig);
				labelRichtig.setForeground(new Color(0,163,0));
				labelRichtig.setText("Richtig: " + quizTemp.getCountRichtig());
				labelRichtig.setBounds(470, 310, 72, 19);
				labelRichtig.setHorizontalAlignment(SwingConstants.LEFT);
				labelRichtig.setHorizontalTextPosition(SwingConstants.CENTER);
				labelRichtig.setVerticalAlignment(SwingConstants.TOP);
				labelRichtig.setFont(new Font("Tahoma", Font.PLAIN, 11));
			}
			{
				labelFalsch = new JLabel();
				getContentPane().add(labelFalsch);
				labelFalsch.setForeground(new Color(163, 0, 0));
				labelFalsch.setText("Falsch: " + quizTemp.getCountFalsch());
				labelFalsch.setBounds(472, 323, 72, 19);
				labelFalsch.setHorizontalAlignment(SwingConstants.LEFT);
				labelFalsch.setHorizontalTextPosition(SwingConstants.CENTER);
				labelFalsch.setFont(new Font("Tahoma", Font.PLAIN, 11));
			}
			{
				labelNoch = new JLabel();
				getContentPane().add(labelNoch);
				labelNoch.setForeground(new Color(160,160,160));
				updateLabelNoch(); // labelNoch.setText
				labelNoch.setFont(new Font("Tahoma", Font.PLAIN, 11));
				labelNoch.setBounds(396, 309, 64, 32);
				labelNoch.setHorizontalAlignment(SwingConstants.LEFT);
				labelNoch.setHorizontalTextPosition(SwingConstants.CENTER);
			}
			{
				nextButton = new JButton();
				getContentPane().add(nextButton);
				nextButton.setText("Weiter");
				nextButton.setBounds(290, 309, 100, 32);
				nextButton.setFocusable(false);
				nextButton.setEnabled(false);
				nextButton.addActionListener(new ActionListener() {

					@Override
					public void actionPerformed(ActionEvent e) {
						nextButton.setEnabled(false);

						answerButton1.setBackground(null);
						answerButton2.setBackground(null);
						answerButton3.setBackground(null);
						answerButton4.setBackground(null);

						quiz.nextQuestion();
						einmalig = true;
						answerHasBeenChoosen = false;
						
						updateLabelNoch();
					}
				});
			}
			this.setSize(574, 406);
		} catch (Exception e) {
			//TODO add your error handling code here
			// e.printStackTrace();
		}

	}

	
	/**
	 * Makes all needed changes to GUI when a new file is loaded 
	 */
	protected void reloadGUIwithChanges() {

		// Neue Datei laden... (PART 1/2)
		quiz.reloadQuestionFilePart1(filename);

		// Im Zwischenschritt die Anzahl der Fragen auslesen 
		// BEVOR reloadQuestionFilePart2, weil dort 
		// getQuestion Aufruf, der mit remove Anzahl -1 macht
		String frg = quiz.getActualNumberOfQuestions() + 
				((quiz.getActualNumberOfQuestions() == 1) ? " Frage" : " Fragen");
		
		// Neue Datei laden fertigstellen!! (PART 2/2)
		quiz.reloadQuestionFilePart2();

		
		// Weiter Button disablen
		nextButton.setEnabled(false);
		// Farbe der Buttons entfernen
		answerButton1.setBackground(null);
		answerButton2.setBackground(null);
		answerButton3.setBackground(null);
		answerButton4.setBackground(null);
		// Buttons enablen (falls EOF ;)
		enableAnswerButtons();
		// Button-Variablen resetten
		einmalig = true;
		answerHasBeenChoosen = false;
		
		// Geladene Datei Anzeige aktualisieren
		questionCounter.setText(quiz.getLoadedFilename() + " enth\u00E4lt " + frg);
		updateLabelNoch();
	}

	
	/**
	 * Updates Noch Label
	 */
	void updateLabelNoch() {
		int noch = quiz.getActualNumberOfQuestions(); 
		if (noch >= 1) labelNoch.setText("(noch " + noch + ")");
		else labelNoch.setText("");
	}
	
	/**
	 * Set all four answer buttons to disabled
	 */
	void disableAnswerButtons(){
		answerButton1.setEnabled(false);
		answerButton2.setEnabled(false);
		answerButton3.setEnabled(false);
		answerButton4.setEnabled(false);
	}
	
	/**
	 * Set all four answer buttons to enabled
	 */
	void enableAnswerButtons(){
		answerButton1.setEnabled(true);
		answerButton2.setEnabled(true);
		answerButton3.setEnabled(true);
		answerButton4.setEnabled(true);
	}
	
	
	/**
	 * Setzt den Text des questionCounter Labels auf someText
	 * 
	 * @param someText
	 */
	public void setQuestionCounterCaption(String someText) {
		this.questionCounter.setText(someText);
	}
	
	
	/**
	 * Erstellt und Zeigt den About Frame an
	 * @author Rafael
	 */
	public void showAbout(){
		
		JFrame frameAbout = new JFrame("About");
		
		JEditorPane taa = new JEditorPane();
        taa.setContentType("text/html"); 
		
		taa.setText("<center><br>" + 
				"<font color=\"blue\">Was Weiss Ich? - Quiz<br>" + version + "</font>" +  
				"<br><br>Ein Quiz f&uuml;r alle IB Studenten im Grundstudium<br>"+
				"<br>entstanden als Projektaufgabe in PMG" +
				"<br>bei Frau Dr. Gabrielle Roth-Dietrich" +
				"<br>an der HS Mannheim im WS 2011/2012"+
				"<br><br><hr width=\"80%\"><br><b>Das WWiQ Team</b> (aka Gruppe B)<br>"+
				"<br>E.Fastner, Q.Kuqi, H.Alkin, N.Blum, R.Kosiel<br>" + 
				"</center>");

		taa.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
		taa.setEditable(false);


		// ------------------------------------------------------------------
		// To set a custom background color on JEditorPane when using Nimbus:
		// ------------------------------------------------------------------

			Color bgColor = new Color(248, 248, 255);
			UIDefaults defaults = new UIDefaults();
			defaults.put("EditorPane[Enabled].backgroundPainter", bgColor);
			taa.putClientProperty("Nimbus.Overrides", defaults);
			taa.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
			taa.setBackground(bgColor);

		// ------------------------------------------------------------------


		// TODO Achtung: Pfad beachten!!! (Bild in bin Ordner kopieren)
		//JLabel lblLogo = new JLabel(new ImageIcon(this.getClass().getClassLoader().getResource("Skynet_Logo.gif")));
		//lblLogo.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
		
		//frameAbout.add(lblLogo, BorderLayout.EAST);
		frameAbout.getContentPane().add(taa, BorderLayout.CENTER);
		frameAbout.setResizable(false);
		frameAbout.setSize(440, 300);
		int xWert = this.getX() + (this.getWidth() - 400)/2;
		int yWert = this.getY() + (this.getHeight() - 300)/2;

		frameAbout.setLocation(xWert, yWert);
		frameAbout.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frameAbout.setVisible(true);
	}

	/**
	 * Erstellt und Zeigt das FAQ Fenster an
	 * @author Rafael
	 */
	public void showFAQ(){
		
		JEditorPane taFaq = new JEditorPane();
        taFaq.setContentType("text/html");
		taFaq.setText(
				"<br>Das Programm ist zwar selbsterkl&auml;rend, aber dennoch tun sich ab und an einige Fragen auf....<br>" +
				"hier die h&auml;ufigsten Fragen und Antworten:<br><br><br>"+
				
				"<font size=+1><b>## Wie erstelle ich eigene Fragendateien? ##</b></font><br>" +
				"Erstelle eine normale Textdatei (.txt) - NICHT .doc oder &auml;hnliches ;)<br>" +
				"und schreibe deine Fragen <u>zeilenweise</u> nach folgendem Schema in die Datei:<br>" +
				"<font face=\"Courier\">&nbsp;&nbsp;text_frage_abc@text_antw1@text_antw2@text_antw3@text_antw3@zahl_1_bis_4<br>" +
				"&nbsp;&nbsp;text_frage_xyz@text_antw1@text_antw2@text_antw3@text_antw3@zahl_1_bis_4<br>" +
				"&nbsp;&nbsp;u.s.w.</font><br>" +
				"Speichere dann die Textdatei unter der Dateiendung \".qz\" ab.<br>" +
				"<font face=\"Courier\">&nbsp;&nbsp;</font><i>Beispiel</i>:<br>" + 
				"<pre>  Wie wird morgen das Wetter?@Sonnig@Regnerisch@Windig@Wechselhaft@2</pre>" +
				
				"<center><table><tr><td align=\"right\">\"<i>Wie wird morgen das Wetter?</i>\"</td><td>ist der Fragentext,</td></tr>" + 
				"<tr><td align=\"right\">\"<i>Sonnig</i>\"</td><td>ist die 1. Antwortm&ouml;glichkeit (oben links)</td></tr>" +
				"<tr><td align=\"right\">\"<i>Regnerisch</i>\"</td><td>ist die 2. Antwortm&ouml;glichkeit (oben rechts),</td></tr>" +
				"<tr><td align=\"right\">\"<i>Windig</i>\"</td><td>ist die 3. Antwortm&ouml;glichkeit (unten links),</td></tr>" +
				"<tr><td align=\"right\">\"<i>Wechselhaft</i>\"</td><td>ist die 4. Antwortm&ouml;glichkeit (unten rechts)</td></tr>" +
				"<tr><td align=\"right\">\"<i>2</i>\"</td><td>markiert die Richtige der Antwortm&ouml;glichkeiten (1-4)</td></tr></table></center><br><br>" +

				
				"<font size=+1><b>## Kann ich meinen Fragentext formatieren? ##</b></font><br>" +
				"Ja! Benutze dazu einfach den entsprechenden HTML-Code.<br><br><br>" +
				
				"<font size=+1><b>## Wie mache ich einen Zeilenumbruch? ##</b></font>" +
				"<br>Einen Zeilenumbruch erzeugst Du mit folgendem HTML-Code: &nbsp;&nbsp;<font face=\"Courier\">&lt;br&gt;</font><br>" +
				"<b><font color=\"purple\">Beachte</font>:</b> Aufgrund der Buttongr&ouml;&szlig;e lassen sich nur <u>bis zu vier Zeilen</u> darstellen!<br><br><br>" +
				
				"<font size=+1><b>## Wie mache ich einen Text farbig? ##</b></font><br>" + 
				"<pre>  Der &lt;font color=\"red\"&gt;rote&lt;/font&gt; Apfel.</pre><br><br>" + 
				
				"<font size=+1><b>## Welche Zeichen darf ich bei meinen Fragen NICHT benutzen? ##</b></font><br>" + 
				"Da das '@' als Trennzeichen fungiert, kannst Du dieses nicht in deinen Fragen benutzen.<br>" +
				"Um das '&#64;' Symbol trotzdem nutzen zu k&ouml;nnen benutze folgenden HTML-Code:<br>" +
				"<pre>   \"&amp;#64;\" </pre>" +
				"Auch sollten die Zeichen &lt; und &gt; vermieden werden, nutze stattdessen:<br>" +
				"<pre>   \"&amp;lt;\" oder \"&amp;#60;\" f&uuml;r &lt;   bzw.   \"&amp;gt;\" oder \"&amp;#62;\" f&uuml;r &gt;</pre><br><br>" + 
				
				"<font size=+1><b>## Was kann ich tun wenn Zeichen nicht richtig dargestellt werden? ##</b></font><br>" + 
				"Schreibe in deiner Fragendatei alle Umlaute und Sonderzeichen als entsprechenden HTML-Code:<br>" + 
				"\t\"<font face=\"Courier\">&auml;</font>\" wird zu \"<font face=\"Courier\">&amp;auml;</font>\", \"<font face=\"Courier\">&Uuml;</font>\" wird zu \"<font face=\"Courier\">&amp;Uuml;</font>\", etc.<br>" + 
				"\tBeispiel: \"<font face=\"Courier\">Der K&auml;se hat L&ouml;cher</font>\" wird dann zu \"<font face=\"Courier\">Der K&amp;auml;se hat L&amp;ouml;cher</font>\"" + 
				"<p>F&uuml;r weitere Codes siehe <font color=\"blue\">http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_html</font>)</p><br><br>" + 
								
				"<font size=+1><b>## Was tun, wenn das Laden einer Datei nicht richtig funktioniert? ##</b></font>" +
				"<br>Sollte das vorkommen so ist sicherlich deine <font color=\"red\">Fragendatei ung&uuml;ltig</font>!<br>" +
				" &nbsp; - Stelle sicher, dass Du das richtige Trennzeichen verwendest!<br>" +
				" &nbsp; - Stelle sicher, dass die Datei kein Flie&szlig;text ist. Zeilenumbruch nach jeder Frage!<br>" +
				" &nbsp; - Stelle sicher, dass in jeder Zeile der Datei nur eine Frage steht!<br>" +
				" &nbsp; - Stelle sicher, dass in jeder Zeile genau 5 Trennzeichen vorkommen!<br>" +
				" &nbsp; - Stelle sicher, dass die Zahl nach dem letzten Trennzeichen (am Ende der Zeile) eine 1, 2, 3 oder 4 ist!<br>" +
				"<br>"
				
				);

		taFaq.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
		taFaq.setEditable(false);
		
		// ------------------------------------------------------------------
		// To set a custom background color on JEditorPane when using Nimbus:
		// ------------------------------------------------------------------

			Color bgColor = new Color(248, 248, 255);
			UIDefaults defaults = new UIDefaults();
			defaults.put("EditorPane[Enabled].backgroundPainter", bgColor);
			taFaq.putClientProperty("Nimbus.Overrides", defaults);
			taFaq.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
			taFaq.setBackground(bgColor);

		// ------------------------------------------------------------------
		
		JScrollPane scrollingArea = new JScrollPane(taFaq);
		
		JFrame frameFaq = new JFrame("Frequently Asked Questions");
		JLabel lblFaq = new JLabel(" Was Weiss Ich Quiz - Spielend zum Klausur-Erfolg ");
		
		frameFaq.getContentPane().add(scrollingArea, BorderLayout.CENTER);
		frameFaq.getContentPane().add(lblFaq, BorderLayout.NORTH);
		frameFaq.setResizable(false);
		frameFaq.setSize(625, 400);

		frameFaq.setLocationRelativeTo(null);
		frameFaq.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frameFaq.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// Auto-generated method stub
	}
	
	
}
